<?php

class Login_Controller extends Controller_Core {

	private static $data;
	private static $validate;

	//コンストラクタ
	public function __construct(){
		parent::__construct();
		self::$data['title'] = 'てすとろぐいん';
		$this->template = new PtalView_Core();
	}

	//初期表示
	public function index(){
		self::$data['dispErr'] = 'errBoxHidden';
		self::$data['errMsgs'] = array();
		self::$data['txtLoginid'] = '';

		$this->template->view('login', self::$data);
	}

	//ログイン処理
	public function login(){

		$templateFile = '';

        $inputUserId = $this->input->post('txtLoginid');
        $inputPass = $this->input->post('txtPass');

        self::$validate = new Validation_Core($_POST);

        //インプットデータValidationチェック
        if (self::_inputCheck()){
        	//ログイン成功
            self::$data['title'] = 'ろぐいんおめでとう！';
            self::$data['userName'] = self::_getUserName($inputUserId);
            $templateFile = 'loginsuccess';
        }else{
        	//ログイン失敗
        	self::$data['dispErr'] = 'errBoxVisible';
            self::$data['txtLoginid'] = $inputUserId;
            self::$data['txtPass'] = '';
            self::$data['errMsgs'] = self::$validate->errors('error_messages');
            $templateFile = 'login';
        }

		$this->template->view($templateFile, self::$data);
	}

	//インプットチェック
	private function _inputCheck(){

		//データをトリムしちゃう
		self::$validate->pre_filter('trim', TRUE);

		//必須チェックルール設定
        self::$validate->add_rules('txtLoginid', 'required');
        self::$validate->add_rules('txtPass', 'required');
        //レングスチェックルール設定　最小1桁、最大10桁
        self::$validate->add_rules('txtLoginid', 'length[1,10]');
        self::$validate->add_rules('txtPass', 'length[1,10]');
        //入力文字ルール設定　英数字、アンダースコア、ダッシュはOK
        self::$validate->add_rules('txtLoginid', 'alpha_dash');
        self::$validate->add_rules('txtPass', 'alpha_dash');

        //Validationチェック後passCheckメソッドを呼出、パスワードチェックを行う。
        self::$validate->add_callbacks('txtPass', array($this, 'passCheck'));

        //Validationチェック実行
        return self::$validate->validate();

	}

	//パスワードチェック
	public function passCheck($validate){

		//モデル呼出、ユーザーモデル
        $this->getUser = GetUser_Model::singleton();

        //パスワード取得
        $pass = $this->getUser->getPassWord($validate->txtLoginid);
        //パスワードチェック
        if ($validate->txtPass != $pass){
            $validate->add_error( 'txtPass', 'pass_err');
        }

	}

	//ユーザー名取得
    private function _getUserName($userId){

        $this->getUser = GetUser_Model::singleton();

        return $this->getUser->getUserName($userId);

    }
}